﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SGC.BE;
using System.Data.SqlClient;
using System.Data;

namespace SGC.DL.Comun
{
    public static class ValidacionesAntiguas
    {
        static SqlConnection sCn_Ap = null;
        static string Str_ConSql = @"Data Source=GYSW8CANGELES;Initial Catalog=Chilis;Integrated Security=True";

        public static BE_Proceso obtenerNombreProcesoPorPlan_DL(string codigo_Plan)
        {
            BE_Proceso item = null;

            string strError = string.Empty;

            using (SqlCommand sCmd_Sp = new SqlCommand())
            {
                sCn_Ap = new SqlConnection(Str_ConSql);
                sCmd_Sp.CommandType = CommandType.Text;
                sCmd_Sp.CommandText = "SELECT DISTINCT PRO.NOMBRE, PRO.LIDER " +
                                      "FROM TB_PLAN_PROCESO_AREA PPA INNER JOIN TB_PROCESO PRO " +
                                      "ON PPA.IDPROCESO = PRO.IDPROCESO " +
                                      "WHERE PPA.IDPLAN_AUDITORIA= '" + codigo_Plan + "'";
                sCmd_Sp.Connection = sCn_Ap;
                sCn_Ap.Open();

                SqlDataReader sDar_Datos;

                sDar_Datos = sCmd_Sp.ExecuteReader();

                while (sDar_Datos.Read())
                {
                    item = new BE_Proceso();
                    item.CODIGO_PROCESO = sDar_Datos["NOMBRE"].ToString();
                    item.NOMBRE = sDar_Datos["LIDER"].ToString();
                }

                sCn_Ap.Close();

                sDar_Datos.Close();

            }
            return item;
        }

        public static List<BE_Area> obtenerNombresAreasPorPlan_DL(string codigo_Plan)
        {
            List<BE_Area> lst_Areas = new List<BE_Area>();
            BE_Area item = null;

            string strError = string.Empty;

            using (SqlCommand sCmd_Sp = new SqlCommand())
            {
                sCn_Ap = new SqlConnection(Str_ConSql);
                sCmd_Sp.CommandType = CommandType.Text;
                sCmd_Sp.CommandText = "SELECT DISTINCT AREA.NOMBRE FROM TB_PLAN_PROCESO_AREA PPA " +
                                      "INNER JOIN TB_AREA AREA ON PPA.IDAREA = AREA.IDAREA " +
                                      "WHERE PPA.IDPLAN_AUDITORIA = '" + codigo_Plan + "'";

                sCmd_Sp.Connection = sCn_Ap;
                sCn_Ap.Open();

                SqlDataReader sDar_Datos;

                sDar_Datos = sCmd_Sp.ExecuteReader();

                while (sDar_Datos.Read())
                {
                    item = new BE_Area();
                    item.NOMBRE = sDar_Datos["NOMBRE"].ToString();
                    lst_Areas.Add(item);
                }

                sCn_Ap.Close();

                sDar_Datos.Close();

            }
            return lst_Areas;
        }

        public static BE_Empleado obtenerNombreAuditorLider_DL(string codigo_Plan)
        {
            BE_Empleado item = null;

            string strError = string.Empty;

            using (SqlCommand sCmd_Sp = new SqlCommand())
            {
                sCn_Ap = new SqlConnection(Str_ConSql);
                sCmd_Sp.CommandType = CommandType.Text;
                sCmd_Sp.CommandText = "SELECT EMP.NOMBRE FROM TB_PLAN_AUDITOR PA " +
                                      "INNER JOIN TB_EMPLEADO EMP ON PA.IDEMPLEADO = " +
                                      "EMP.IDEMPLEADO WHERE IDPLAN_AUDITORIA = '" + codigo_Plan +
                                      "' AND LIDER = 1";
                sCmd_Sp.Connection = sCn_Ap;
                sCn_Ap.Open();

                SqlDataReader sDar_Datos;

                sDar_Datos = sCmd_Sp.ExecuteReader();

                while (sDar_Datos.Read())
                {
                    item = new BE_Empleado();
                    item.NOMBRE_EMP = sDar_Datos["NOMBRE"].ToString();
                }

                sCn_Ap.Close();

                sDar_Datos.Close();

            }
            return item;

        }

        public static List<BE_Procedimiento> obtenerProcedimientosPorPlan_DL(string codigo_Plan)
        {
            List<BE_Procedimiento> lst_Procedimientos = new List<BE_Procedimiento>();
            BE_Procedimiento item = null;

            string strError = string.Empty;

            using (SqlCommand sCmd_Sp = new SqlCommand())
            {
                sCn_Ap = new SqlConnection(Str_ConSql);
                sCmd_Sp.CommandType = CommandType.Text;
                sCmd_Sp.CommandText = "SELECT PRO.NOMBRE AS PROCEDIMIENTO , " +
                                      "CASE WHEN FECHA_AUDITORIA IS NULL THEN 0 ELSE 1 END " +
                                      "AS AUDITADO , NCN.CONFORMIDAD , NCN.CANTIDAD AS CANTIDAD " +
                                      "FROM TB_DETALLE_PLAN_AUDITORIA DPA INNER JOIN TB_NO_CONFORMIDAD " +
                                      "NCN ON DPA.IDPROCEDIMIENTO = NCN.IDPROCEDIMIENTO AND " +
                                      "DPA.IDCHECKLIST = NCN.IDCHECKLIST AND " +
                                      "DPA.IDPLAN_AUDITORIA = NCN.IDPLAN_AUDITORIA INNER JOIN " +
                                      "TB_PROCEDIMIENTO PRO ON DPA.IDPROCEDIMIENTO = PRO.IDPROCEDIMIENTO " +
                                      "WHERE DPA.IDPLAN_AUDITORIA = '" + codigo_Plan + "'";

                sCmd_Sp.Connection = sCn_Ap;
                sCn_Ap.Open();

                SqlDataReader sDar_Datos;

                sDar_Datos = sCmd_Sp.ExecuteReader();

                while (sDar_Datos.Read())
                {
                    item = new BE_Procedimiento();
                    item.NOMBRE = sDar_Datos["PROCEDIMIENTO"].ToString();
                    if (sDar_Datos["AUDITADO"].ToString() == "1")
                    {
                        item.Auditado = true;
                    }
                    else
                    {
                        item.Auditado = false;

                    }

                    if (sDar_Datos["CONFORMIDAD"].ToString() == "1")
                    {
                        item.Conformidad = true;
                    }
                    else
                    {
                        item.Conformidad = false;
                    }

                    item.Cantidad = int.Parse(sDar_Datos["CANTIDAD"].ToString());
                    lst_Procedimientos.Add(item);
                }

                sCn_Ap.Close();

                sDar_Datos.Close();

            }
            return lst_Procedimientos;
        }
    }
}

